package com.learn.pojo;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.io.Serializable;

/**
 * 商品实体类
 *  indexName - 对应的索引命名
 *  shards - 主分片数量  新版默认1 1-6 默认5
 *  replicas - 副本分派你数量 默认1
 */
@Data
@Document(indexName = "ego_item", shards = 3, replicas = 1)
public class Item implements Serializable {
    //必须有 id,这里的 id 是全局唯一的标识，等同于 es 中的"_id"
    @Id
    private String id;//商品唯一标识
    /**
     * type : 字段数据类型 默认text
     * analyzer : 分词器类型
     * index : 是否索引(默认:true)
     * Keyword : 短语,不进行分词
     */
    /**
     * Field 是创建索引时用的 在文档读写时，无效
     */
    @Field(type = FieldType.Text, analyzer = "ik_max_word")
    private String title;//商品名称

    /**
     * @JsonProperty 描述当前属性在做JSON字符串互转的时候 对应的JSON属性名是什么
     * 只在文档读写时，生效 创建索引或配置映射时，无效
     */
    @Field(name = "sell_point",type = FieldType.Text,analyzer = "ik_smart")
    @JsonProperty("sell_point")
    private String sellPoint;//分类名称

    @Field(type = FieldType.Long)
    private Long price;//商品价格

    @Field(name = "item_desc",type = FieldType.Text,analyzer = "ik_max_word")
    @JsonProperty("item_desc")
    private String itemDesc;//图片地址

    @Field(type = FieldType.Integer)
    private int num;//分类名称

}
